<?php
namespace ImiDemo\TcpDemo\Tcp2\Listener;

use Imi\Bean\Annotation\ClassEventListener;
use Imi\Server\Event\Param\ReceiveEventParam;
use Imi\Server\Event\Listener\IReceiveEventListener;

/**
 * 手动处理数据接收示例
 * 去除配置文件中 beans-TcpDispatcher-middlewares 中间件设置
 * 就可以实现完全在这里处理数据接收
 * @ClassEventListener(className="Imi\Server\TcpServer\Server",eventName="receive")
 */
class Receive implements IReceiveEventListener
{
    /**
     * 事件处理方法
     * @param ReceiveEventParam $e
     * @return void
     */
    public function handle(ReceiveEventParam $e)
    {
        if('tcp2' !== $e->server->getName())
        {
            return;
        }

        // 手动获取数据及发送响应数据
        // $dataParser = $e->server->getBean(\Imi\Server\DataParser\DataParser::class);
        // $data = [
        //     'action'        =>    'login',
        //     'success'        =>    true,
        //     'receiveData'    =>    $e->data, // 接收到的数据
        // ];
        // $data = $dataParser->encode($data); // 编码发送的数据
        // $e->server->getSwooleServer()->send($e->fd, $data); // 发送
    }
}